'use strict';

const Service = require('egg').Service;
const { md5 } = require('utility')
const jwt = require("jsonwebtoken")
class UserService extends Service {
  async login() {
    const { ctx, app } = this;
    // 1. 拿到账号密码
    // 2. 判断数据库有没有
    // 3. 没有报错 有就返回用户信息+token+token的有效期（无痛刷新： 前端判断到token快过期了而且用户还在操作那么就刷新一遍token）
    const { username, password } = ctx.request.body;
    const isLogin = await app.mysql.get('users', { username, password: md5(String(password)), })
    if (isLogin) {
      return {
        userData: {
          id: isLogin.id,
          nickname: isLogin.nickname,
        },
        token: jwt.sign({
          id: isLogin.id,
          nickname: isLogin.nickname
        }, app.config.keys, {
          expiresIn: '2h' // 两个小时的有效期 过期就会作废
        }),
        expiresIn: Date.now() + (2 * 60 * 60 * 1000)
      }
    } else {
      return '账号密码有误'
    }
  }
  async register() {
    const { ctx, app } = this;
    const { username, password, nickname } = ctx.request.body;
    // 1. 判断账号存不存在
    const isHave = await app.mysql.get('users', { username })
    if (isHave) {
      return "账号已经存在"
    } else {
      const res = await app.mysql.insert('users', { username, password: md5(String(password)), nickname })
      return res;
    }
  }
}

module.exports = UserService;
